`timescale 1ns/1ns

module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
reg [2:0]Y_r;
reg GS_r;
reg EO_r;
assign Y=Y_r;
assign GS=GS_r;
assign EO=EO_r;
always@(*)begin
	if(!EI)begin
		Y_r=3'b000;
		GS_r=1'b0;
		EO_r=1'b0;
	end
	else begin
		casex(I)
			8'b0000_0000:begin
				Y_r=3'b000;
				GS_r=1'b0;
				EO_r=1'b1;
			end
			8'b1zzz_zzzz:begin
				Y_r=3'b111;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b01zz_zzzz:begin
				Y_r=3'b110;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b001z_zzzz:begin
				Y_r=3'b101;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b0001_zzzz:begin
				Y_r=3'b100;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b0000_1zzz:begin
				Y_r=3'b011;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b0000_01zz:begin
				Y_r=3'b010;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b0000_001z:begin
				Y_r=3'b001;
				GS_r=1'b1;
				EO_r=1'b0;
			end
			8'b0000_0001:begin
				Y_r=3'b000;
				GS_r=1'b1;
				EO_r=1'b0;
			end
		endcase
	end
end
endmodule